The present invention generally relates to a system and method for improving the responsiveness of network computer systems. Particularly, the present invention relates to a system and method for an improved client in a network computer system that predicts server events and applies the predicted server events as screen updates prior to receiving server-supplied events.
Remote display systems allow a distant user to control a computer or application with a graphical user interface as if the user were physically in front of the machine. In general, the basic model includes a client computer and a server computer. The client computer is generally the computer where the user is located. The client computer streams user events, such as keystrokes, mouse movements, or other input to the server computer over a network connection. The server streams server events, for example drawing commands, back to the client. In general, the server streams server events back to the client using either a client-pull model or a server-push model. The client, once it receives the server events, executes a screen update to modify the screen that the user sees.
FIG. 1 illustrates an example of a conventional remote display system 100. The client 110 may be a user's computer. The client 110 may be connected to a display screen, keyboard, computer mouse, or other input/output devices. The client 110 may also include a cache 120. The cache 120 may be implemented separately or as part of a frame buffer. The cache 120 may also be implemented in software or in hardware. The client 110 may receive user events 130, such as input from a keyboard, computer mouse, or other input device, and communicate the user events 130 over a network to a server 140. The server 140 may process the user events 130 and communicate server events 150 back to the client 110. The server events 150 may include drawing commands, bitmaps, color tables, blit operations, ordering operations, or other display commands. The client 110 receives the server events 150 and displays an updated screen for the user.
Increasingly, remote display systems, such as the system 100 demonstrated in FIG. 1, are being used over wide-area networks. Wide-area-networks, such as the Internet, have much higher latency time frames and variance than those in local-area networks. The higher latencies and variance dramatically reduce the utility of remote display systems for end-users. The high latencies and/or the variance of latency make the server computer seem choppy, slow, and hard to control from the perspective of the client and the user.
As demonstrated in FIG. 1, the client computer 110 and server computer 140 in a remote display system 100 generally communicate through two independent event streams. User events such as keystrokes, mouse movements and clicks, and other input flow from the client 110 to the server 140. Server events, such as graphics primitives flow from the server 140 to the client 110. In general, remote display systems do not require that the user event stream 130 and the server event stream 150 be synchronized. However, the two event streams are often synchronized through the user who may frequently wait for the effects of his actions to be shown on the display. The user is thus subject to the round-trip time of the network path. The user thus perceives the high mean latency and/or variance of latency of the network path as slowness and/or jitter in the display.
Therefore, a system and method is needed to increase the utility of a remote display system over a wide-area-network. Such a system and method may provide a faster, more efficient user experience than is available when using current remote display systems.